public class Test {
    public static void main() {
        // 字符类型
        char c1 = 'A';
        System.out.println("c1 is " + c1);
        int code = (int) c1; // 强制类型转换，把char转换为int
        System.out.println("code is " + code);

        // 字符串类型: String是引用类型
        String s1 = "ABC";
        String s2 = "abc\"xyz"; // 转义字符 \
        System.out.println("s1 is " + s1);
        System.out.println("s2 is " + s2);

        // 字符串连接
        String s3 = s1 + " " + s2; // 使用+连接字符串
        System.out.println("s3 is " + s3);

        // 用+连接字符串和其他数据类型，会将其他数据类型先自动转型为字符串
        String s4 = "code is " + 65;
        System.out.println("s4 is " + s4);

        // 多行字符串
        String s5 = """
                多行字符串
                第一行
                第二行
                第三行
                            """;
        System.out.println("s5 is " + s5);

        // 不可变特性
        // Java的字符串除了是一个引用类型外，还有个重要特点，就是字符串不可变
        String s = "hello";
        String t = s;
        s = "world";
        System.out.println(t);
        // String 对象本身不可变，s = "world";
        // 并没有把原 "hello" 改掉，只是让变量 s 指向了新创建的字符串常量 "world"。
        // 变量 t 仍指向旧的 "hello"，所以输出不变

        // 空值null
        // 引用类型的变量可以指向一个空值null，它表示不存在，即该变量不指向任何对象
        String s11 = null; // s1是null
        String s22 = s11; // s2也是null
        String s33 = ""; // s3指向空字符串，不是null
        System.out.println("s11 is " + s11);
        System.out.println("s22 is " + s22);
        System.out.println("s33 is " + s33);
    }
}